﻿//Código desenvolvido na integra por João Ribeiro
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.Configuration;

namespace GestaoContas
{
    public partial class Educando : Form
    {
        private string _connectionStringJardimBD;
        private bool _existeFoto = false;
        private FichaEducando _fichaEducando;

        public Educando()
        {
            InitializeComponent();
        }

        public Educando(int pessoaId)
        {
            InitializeComponent();
            _pessoaId = pessoaId;
            _connectionStringJardimBD = ConfigurationManager.ConnectionStrings["ConnectionStringJardimBD"].ConnectionString;
            _fichaEducando = new FichaEducando();
        }

        public Educando(bool alterar, string nomeEducando)
        {
            InitializeComponent();
            _connectionStringJardimBD = ConfigurationManager.ConnectionStrings["ConnectionStringJardimBD"].ConnectionString;

            if (alterar)
            {
                _fichaEducando = new FichaEducando();
                _existeFoto = _fichaEducando.PreencheObjectoEducando(nomeEducando);
                _criancaId = _fichaEducando.CriancaId;
                _fotoId = _fichaEducando.FotoId;
            }
            else
            {
                textBoxNome.ReadOnly = true;
                textBoxObservacoes.ReadOnly = true;
                checkBoxFrequenta.Enabled = false;
                dateTimePickerNascimento.Enabled = false;
                buttonAdicionaFoto.Enabled = false;
                buttonGravar.Enabled = false;
                _fichaEducando = new FichaEducando();
                _existeFoto = _fichaEducando.PreencheObjectoEducando(nomeEducando);
            }
            PreencheFormEducando();
        }

        private int _criancaId;

        public int CriancaId
        {
            get { return _criancaId; }
            set { _criancaId = value; }
        }

        private string _nome;

        public string Nome
        {
            get { return _nome; }
            set { _nome = value; }
        }

        private DateTime _dataNascimento;

        public DateTime DataNascimento
        {
            get { return _dataNascimento; }
            set { _dataNascimento = value; }
        }

        private bool _frequenta;

        public bool Frequenta
        {
            get { return _frequenta; }
            set { _frequenta = value; }
        }

        private string _observacoes;

        public string Observacoes
        {
            get { return _observacoes; }
            set { _observacoes = value; }
        }

        private string _fotoPath;

        public string FotoPath
        {
            get { return _fotoPath; }
            set { _fotoPath = value; }
        }

        private int _fotoId;

        public int FotoId
        {
            get { return _fotoId; }
            set { _fotoId = value; }
        }

        private int _pessoaId;

        public int PessoaId
        {
            get { return _pessoaId; }
            set { _pessoaId = value; }
        }


        /// <summary>
        /// Preenche o formulário.
        /// </summary>
        /// <param name="nomeEducando">Nome do educando</param>
        /// <returns>True, caso exista foto do educando inserida; False, caso contrário.</returns>
        private void PreencheFormEducando()
        {
            textBoxNome.Text = _fichaEducando.Nome;
            dateTimePickerNascimento.Value = _fichaEducando.DataNascimento;
            checkBoxFrequenta.Checked = _fichaEducando.Frequenta;
            textBoxObservacoes.Text = _fichaEducando.Observacoes;

            _fotoId = _fichaEducando.FotoId;
            _fotoPath = _fichaEducando.FotoPath;

            if (_fotoPath != null)
            {
                pictureBoxEducando.ImageLocation = _fotoPath;
            }

        }

        /// <summary>
        /// Verifica se a path da foto do educando foi alterada.
        /// </summary>
        /// <returns>True, caso a path tenha sido alterada.</returns>
        private bool VerificaAlteracaoFoto()
        {
            bool fotoAlterada = false;
            if (_fichaEducando.FotoPath != pictureBoxEducando.ImageLocation)
            {
                fotoAlterada = true;
            }
            return fotoAlterada;
        }

        private void buttonGravar_Click(object sender, EventArgs e)
        {
            _nome = textBoxNome.Text;
            DateTime data = new DateTime(dateTimePickerNascimento.Value.Year, dateTimePickerNascimento.Value.Month, dateTimePickerNascimento.Value.Day);
            _dataNascimento = data;
            _frequenta = checkBoxFrequenta.Checked;
            _observacoes = textBoxObservacoes.Text;
            _fotoPath = pictureBoxEducando.ImageLocation;
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void buttonAdicionaFoto_Click(object sender, EventArgs e)
        {
            OpenFileDialog fDialog = new OpenFileDialog();
            fDialog.Filter = "JPG Files|*.jpg|JPEG Files|*.jpeg|BMP Files|*.bmp";
            fDialog.InitialDirectory = @"C:\";
            if (fDialog.ShowDialog() == DialogResult.OK)
            {
                pictureBoxEducando.ImageLocation = fDialog.FileName.ToString();
                _fotoPath = fDialog.FileName.ToString();
            }
        }
    }
}